//package com.luyi.sensor.util;
//
////import com.lu.ssm.dao.SerialNumberDAO;
//import com.luyi.sensor.dao.sensor.SensorBootMapperImpl;
//import com.luyi.sensor.entity.Sensor;
//import com.luyi.sensor.entity.SystemSerialNumberEntity;
//import org.springframework.beans.factory.annotation.Autowired;
//import org.springframework.stereotype.Service;
//
//import java.text.DecimalFormat;
//import java.text.Format;
//import java.util.Date;
//import java.util.concurrent.locks.ReentrantLock;
//
//@Service
//public class SerialNumberServiceImpl {
//
//    @Autowired
//    private SensorBootMapperImpl sensorBootMapperImpl;
//
//    /**
//     * 生成器锁
//     */
//    private final ReentrantLock lock = new ReentrantLock();
//
//    /**
//     * 根据模块code生成序列号
//     *
//     * @param moduleType 生成流水号类型
//     * @return 序列号
//     */
//    public synchronized String generateSerialNumberByModelType(String moduleType) {
//        StringBuffer serialNumberStr = new StringBuffer();//最终的结果
//
//        String moduleTime = DateUtils.format(new Date(), "yyyyMMddHHmmss");
//
//        Sensor sensor = sensorBootMapperImpl.findMaxByType(moduleType);
//
//        if(sensor == null) {//如果之前数据库不为空
//            //流水号实体
//            SystemSerialNumberEntity serialNumberEntity = new SystemSerialNumberEntity();
//            serialNumberEntity.setModuleType(moduleType);
//            serialNumberEntity.setModuleTime(moduleTime);
//            serialNumberEntity.setModuleNumber(0);
//
//            sensorBootMapperImpl.add(serialNumberEntity);//保存到数据库
//
//            //生成返回流水号
//            serialNumberStr.append(moduleType);
//            serialNumberStr.append(moduleTime);
//            serialNumberStr.append("00000");
//            return serialNumberStr.toString();
//        } else {
//            //当前数据库最大动态数字
//            Integer oldMaxNum = sensor.getModuleNumber();
//            Integer newMaxNum = ++oldMaxNum;
//
//            //更新数据库
//            SystemSerialNumberEntity serialNumberEntity = new SystemSerialNumberEntity(moduleType, moduleTime, newMaxNum);
////            serialNumberEntity.setModuleType(moduleType);
////            serialNumberEntity.setModuleTime(moduleTime);
////            serialNumberEntity.setModuleNumber(newMaxNum);
//            sensorBootMapperImpl.add(serialNumberEntity);
//
//            //转换数据格式，例如：123=>00123
//            Format f1 = new DecimalFormat("00000");
//            String newMaxNumStr = f1.format(newMaxNum);
//            //生成返回流水号
//            serialNumberStr.append(moduleType);
//            serialNumberStr.append(moduleTime);
//            serialNumberStr.append(newMaxNumStr);
//
//            return serialNumberStr.toString();
//        }
//    }
//
//}
